#!usr/bin/node
//声明一个爆炸类
// function Bomb() {
//   this.message = 'bomb';
// };

// //为Bomb爆炸类的原型的explode添加一个爆炸方法
// Bomb.prototype.explode = function () {
//   console.log(this.message);
// };

// //实例化一个类
// let bomb = new Bomb();

// //定时炸弹
// let timeId = setTimeout(bomb.explode.bind(bomb), 2000);

// //learTimeout() 方法是 JavaScript 中用于取消由
// // setTimeout() 方法设置的延时调用的函数。
// //当你使用 setTimeout() 来设置一个定时器，
// //它会返回一个定时器的 ID，你可以使用这个 
// //ID 来取消这个定时器。
// clearTimeout(timeId);


// 编写定时炸弹构造函数
// 炸弹的 start 方法启动定时器，3 秒钟之后炸弹爆炸
// 炸弹的 clear 方法取消定时器
// 实例化两个定时炸弹对象：b1 和 b2
// b1 调用 start 方法
// b2 调用 start 方法
// b2 在 1 秒钟之后，调用 clear 方法

//编写定时炸弹构造函数
class Bomb {
  constructor() {
    this.timer = null;
  }

  // 炸弹的 start 方法启动定时器，3 秒钟之后炸弹爆炸
  start() {
    console.log('Bomb started.It will explode in 3 seconds.');
    this.timer = setTimeout(() => {
      console.log('BOOM!');
    }, 3000)
  }

  // 炸弹的 clear 方法取消定时器
  clear() {
    if (this.timer) {
      clearTimeout(this.timer);
      console.log('Boomb cleared before explosion.');
      this.timer = null;
    } else {
      console.log('No active bomb to clear.');
    }
  }
}

//实例化两个对象：b1和b2
const b1 = new Bomb();
const b2 = new Bomb();

//b1调用start方法
b1.start();

//b2调用start方法
b2.start();

//b2在1秒后，调用clear方法
setTimeout(() => {
  b2.clear();
}, 1000);